﻿using StoreSQLSugar.Models;
using StoreSQLSugar.Models.ViewModel;
using System;
using System.Collections.Generic;

namespace StoreSQLSugar.Forms.StoreFrm
{
    // 父窗体总共公开三个重要控件：ucPager1, cbbSearchCondition， TxtCondition
    // 列表类子窗体(如：StoreListFrm) 继承 父窗体BaseListFrm时，遵循如下几个步骤：
    // 1。设置好泛型， 如：public partial class StoreListFrm : BaseListFrm<Store, VStore, StoreAddEditFrm>
    // Store是添加，修改，删除时使用的实体类，VStore是查询时使用的视图实体类，StoreAddEditFrm添加和修改时使用的窗体
    // 2。Load事件中，扩展查询条件下拉框，
    // 如：
    // cbbSearchCondition.Items.Insert(0, "仓库名称");
    // cbbSearchCondition.SelectedIndex = 0;
    // ucPager1.Page = 1;
    // 3。重写重要方法：UcPager1_PageChanged
    public partial class StoreListFrm : BaseListFrm<Store, VStore, StoreAddEditFrm>
    {
        public StoreListFrm()
        {
            InitializeComponent();
            Load += StoreListFrm_Load;
        }

        private void StoreListFrm_Load(object sender, EventArgs e)
        {
            cbbSearchCondition.Items.Insert(0, "仓库位置");
            cbbSearchCondition.Items.Insert(0, "仓库名称");
            cbbSearchCondition.SelectedIndex = 0;
            ucPager1.Page = 1;
        }

        // 查询
        public override void UcPager1_PageChanged(object sender, EventArgs e)
        {
            // 1。得到查询条件
            var exp = BuildCondition();

            // 2。扩展查询条件
            if (!cbbSearchCondition.SelectedItem.ToString().Contains("时间"))
            {
                exp.OrIF(!string.IsNullOrWhiteSpace(TxtCondition.Text), ut =>
                   ut.StoreName.Contains(TxtCondition.Text) ||
                   ut.StorePlace.Contains(TxtCondition.Text)
                   );
            }

            // 3。查询并绑定数据等
            Search(exp, "StoreId desc");

            // 4。设置列标题等
            List<dynamic> headerColumns = new List<dynamic>() {
                new { Name="StoreId", HeaderText="仓库编号"},
                new { Name="StoreName", HeaderText="仓库名称"},
                new { Name="StorePlace", HeaderText="仓库位置"},
                new { Name="AreaCount", HeaderText="分区数"}
            };
            List<dynamic> hiddenColumns = new List<dynamic>();
            List<dynamic> formatColumns = new List<dynamic>();
            SetColumn(headerColumns, hiddenColumns, formatColumns);
        }
    }
}
